package com.sc.nft.service;

import com.sc.nft.entity.SysMember;
import com.sc.nft.entity.vo.PushManageVo;
import com.sc.nft.enums.PushManageTypeEnum;
import com.sc.nft.sup.PageResult;

import java.util.Date;
import java.util.List;

/**
 * @author 刘国航
 * @desc
 * @since 2024/6/14 16:18
 */
public interface PushService {

    /**
     * 新增推送
     * @param pushTitle
     * @param pushContent
     * @param pushIcon
     * @param pushType
     * @param enableSchedulePush
     * @param schedulePushTime
     * @param pushTagIdList
     */
    void addPush(String pushTitle, String pushContent, String pushIcon, PushManageTypeEnum pushType, Boolean enableSchedulePush, Date schedulePushTime, List<Long> pushTagIdList);

    /**
     * 编辑推送
     * @param id
     * @param pushTitle
     * @param pushContent
     * @param pushIcon
     * @param pushType
     * @param enableSchedulePush
     * @param schedulePushTime
     * @param pushTagIdList
     */
    void editPush(Long id, String pushTitle, String pushContent, String pushIcon, PushManageTypeEnum pushType, Boolean enableSchedulePush, Date schedulePushTime, List<Long> pushTagIdList);

    /**
     * 删除推送
     * @param id
     */
    void deletePush(Long id);


    /**
     * 查询推送分页
     * @param pageNo
     * @param pageSize
     * @param pushTitle
     */
    PageResult<PushManageVo> listPage(Integer pageNo, Integer pageSize, String pushTitle);

    /**
     * 推送详情
     * @param id
     * @return
     */
    PushManageVo detail(Long id);

    /**
     * 上下架
     * @param id
     * @param status
     */
    void updateStatus(Long id, Boolean status, SysMember sysMember);

    /**
     * 推送消息
     * @param id
     */
    void doPushMessage(Long id, SysMember sysMember);

    /**
     * 推送公告消息
     * @param id
     */
    void doPushNoticeMessage(Long id);

}
